﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Control.Catalogo;
using Entidades.Catalogo;
using Entidades.General;
using Navegador.Vistas;
using Entidades.Consultas.Personalizadas;
using Entidades.Solicitud;

namespace SICOIA.UserControls.Obra
{
    public partial class ucBusquedaObra : ViewController
    {
        private CtrlSolicitudTrabajosRealizar ctrl = null;
        EntUsuario usuario = new EntUsuario();
        protected void Page_Load(object sender, EventArgs e)
        {
            if ((EntUsuario)Session["UserPemex"] == null)
                Response.Write("<script>parent.window.open('../Marcos/EndPEMEX.aspx','_top')</script>");
            else
                usuario = (EntUsuario)Session["UserPemex"];

            ctrl = new CtrlSolicitudTrabajosRealizar();
            LlenarCombos();

            if (!Page.IsPostBack)
            {
                this.grdSoliciudes.DataSource = new List<Entidades.General.IEntidad>();
                this.grdSoliciudes.DataBind();
            }
        }

        #region Eventos Grid
        protected void grdSoliciudes_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gv = (GridView)sender;
            gv.PageIndex = e.NewPageIndex;

            grdSoliciudes.DataSource = (List<EntObraConDetalle>)ObtenerEstado("listaObras");
            grdSoliciudes.DataBind();
        }

        protected void grdSoliciudes_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "Eliminar")
                {
                    BorrarObra(e);                    
                    UpdatePanelCuerpo.Update();
                }
                else if (e.CommandName == "Editar")
                    EditarObra(e);
            }
            catch (BussinesLogicException ex)
            {
                string a = ex.Message;
            }
        }

        protected void grdSoliciudes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton btnEliminar = e.Row.Cells[1].FindControl("btnEliminar") as ImageButton;

                e.Row.Attributes.Add("onMouseOver", "this.style.cursor = 'hand';this.style.backgroundColor = 'yellow';");
                e.Row.Attributes.Add("onMouseOut", "this.style.backgroundColor = 'white';");

                if (btnEliminar != null)
                    btnEliminar.Attributes.Add("onclick", "javascript:return " + "confirm('Esta seguro de eliminar esta Obra?. " + "')");
            }
        }

        private void EditarObra(GridViewCommandEventArgs e)
        {

        }

        private void BorrarObra(GridViewCommandEventArgs e)
        {
            EntSolicitudTrabajosRealizar solicitudTrabajo = new EntSolicitudTrabajosRealizar();
            solicitudTrabajo.CveTrabajoRealizar = int.Parse(e.CommandArgument.ToString());
            CtrlSolicitudTrabajosRealizar controlSolTrabRealizar = new CtrlSolicitudTrabajosRealizar();
            int solicitudCve = controlSolTrabRealizar.Eliminar(solicitudTrabajo);
            List<EntObraConDetalle> listaObras = (List<EntObraConDetalle>)ObtenerEstado("listaObras");
            int indexObra = listaObras.FindIndex(s => ((EntSolicitudTrabajosRealizar)s).CveTrabajoRealizar == solicitudTrabajo.CveTrabajoRealizar);
            listaObras.RemoveAt(indexObra);
            grdSoliciudes.DataSource = listaObras;
            grdSoliciudes.DataBind();
            GuardarEstado("listaObras", listaObras);

            Mensaje("La Obra fue eliminada");
        }
        #endregion

        #region "Utilerias"

        private void Mensaje(string msg)
        {
            string script = string.Empty;
            string CadMensaje = string.Empty;
            CadMensaje = msg.Replace("`", "").Replace("´", "").Replace("\"", "").Replace("'`", "").Replace("'", "");
            script = "<script type='text/javascript' language='javascript'>alert('";
            script = script + CadMensaje + "');";

            script = script + "</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", script, false);
        }

        #endregion

        #region BaseDeDatos

        private void LlenarCombos()
        {
            try
            {
                CtrlSolicitante controlSolicitante = new CtrlSolicitante();
                List<EntSolicitante> ListaSolicitante = new List<EntSolicitante>();
                ListaSolicitante = (List<EntSolicitante>)controlSolicitante.ObtenerTodos().ConvertAll<EntSolicitante>(delegate(IEntidad enti) { return (EntSolicitante)enti; });

                int indexCombo = 0;
                this.cmbArea.Items.Clear();
                this.cmbArea.Items.Insert(0, new ListItem("Seleccione un Elemento", "", true));
                foreach (EntSolicitante elemento in ListaSolicitante)
                    this.cmbArea.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveSolicitante.ToString(), true));

                CtrlActivo ctrlActivo = new CtrlActivo();
                List<EntActivo> ListaActivo = new List<EntActivo>();
                ListaActivo = (List<EntActivo>)ctrlActivo.ObtenerTodos().ConvertAll<EntActivo>(delegate(IEntidad enti) { return (EntActivo)enti; });


                CtrlEstatus ctrlEstatus = new CtrlEstatus();
                List<EntEstatus> ListaEstatus = new List<EntEstatus>();
                ListaEstatus = (List<EntEstatus>)ctrlEstatus.ObtenerTodos().ConvertAll<EntEstatus>(delegate(IEntidad enti) { return (EntEstatus)enti; });

                indexCombo = 0;
                this.cmbEstatus.Items.Clear();
                this.cmbEstatus.Items.Insert(0, new ListItem("Seleccione un Elemento", "", true));
                foreach (EntEstatus elemento in ListaEstatus)
                    this.cmbEstatus.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveEstatus.ToString(), true));

            }
            catch (BussinesLogicException ex)
            {
                Mensaje(ex.Message);
            }
        }

        #endregion

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            ctrl.usuario = usuario;
            List<EntObraConDetalle> lista =
            ctrl.CriteriosObtenerTodos("", txtFechaInicio.Text, txtOficio.Text.ToUpper(), cmbArea.SelectedValue.ToString(), cmbEstatus.SelectedValue.ToString(),"");

            grdSoliciudes.DataSource = lista;
            grdSoliciudes.DataBind();

            GuardarEstado("listaObras", lista);
        }

    }
}